/*
Copyright (C) Ariff Ehsan, Abdul Hadi Fikri

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

/*  Author : Ariff Ehsan
 *           Abdul Hadi Fikri
 *  Date   : June 18, 2009
 */


#ifndef __TASK_H__
#define __TASK_H__
/**
*Data Field
*/	typedef struct task_t {
		uint8_t scheduled : 1;
		void (*run)(void);
		struct task_t* next;
	} task_t;
/**
*Command
*/	extern void TASK_reg(task_t *task, void (*run)(void));
	extern void TASK_run(void);
	extern void TASK_init(void);
	extern void TASK_post(task_t*);

#endif // __TASK_H__
